package org.fg.logserver.service;

import cn.hutool.core.util.StrUtil;
import com.fingard.luna.framework.base.multithread.ThreadContext;
import lombok.extern.slf4j.Slf4j;
import org.fg.logcommon.Constant;
import org.fg.logcommon.util.HttpUtils;
import org.slf4j.MDC;
import org.springframework.stereotype.Service;

import java.util.HashMap;

@Slf4j
@Service
public class TestService {

    public String logTrigger(String key) {
        ThreadContext.setNotInheritableAttribute(Constant.MDC_KEY, key);
        if (StrUtil.isNotEmpty(key) && !"0".equals(key)) {
            MDC.put(Constant.MDC_KEY, key);
        }
        try {
            log.info(" 【log-server】进入 TestService#logTrigger  方法， 开始请求系统【log-client-a】......");
            // 请求系统 A （系统 A 中又会请求系统 C）
            request("http://127.0.0.1:8991/api/log-a/log-trigger");
            log.info(" 【log-server】请求【log-client-a】 结束，开始请求系统 【log-client-b】......");
            // 请求系统 B
            request("http://127.0.0.1:8992/api/log-b/log-trigger");
            log.info(" 【log-server】请求【log-client-b】 结束");
            log.info("任务处理完成！！！");
        } finally {
            MDC.remove(Constant.MDC_KEY);
            ThreadContext.removeAttribute(Constant.MDC_KEY);
        }
        return "";
    }


    private void request(String url) {
        HashMap<String, String> head = new HashMap<>();
        String mdcKey = ThreadContext.getAttribute(Constant.MDC_KEY);
        if (StrUtil.isNotEmpty(mdcKey) && !"0".equals(mdcKey)) {
            head.put(Constant.MDC_KEY, mdcKey);
        }
        HttpUtils.post(url, head, new HashMap<>());
    }
}
